// 加载express模块
const express = require('express')

// 加载Joi模块
const Joi = require('joi')

// 加载jwt模块
const jwt = require('jsonwebtoken')

// 加载jwt加密密匙
const key = require('../jwt')

// 加载pool连接池
const pool = require('../mysql/pool')

// 创建登录模块路由
const router  = express.Router()


/**
 * 
 * 用户登陆验证
 * @param:
 *  name: xxxxxx 用户名
 *  password: xxxxxx 密码
 * @return: 
 * {status: 200,message: 'ok',data:{uese:{用户信息},token:xxxxxx}}
 */
router.post('/',(req,res,next)=>{
    console.log(req.body);
    const {
        name,
        password
    } = req.body // post请求的参数在请求体里

    const schema = Joi.object({ 
        name:Joi.string().min(2).max(12).required(),
        password:Joi.string().required()
        // .regex(/^[a-zA-Z0-9]{8,16}$/)
    })
    const {error,value} = schema.validate(req.body)
    if(error){
        return res.send({ // 结束
            status:400,
            message:error.message
        })
    }

    // 执行用户登录验证业务

    pool.query("SELECT name,id,nickname from user where name=? AND password=?",[name,password],(err,r)=>{
        if(err){
            return next(err)
        }
        if(r.length === 1){
           const token =  jwt.sign(JSON.parse(JSON.stringify(r[0])),key,{
                expiresIn:'1h'
            })
            res.send({
                status:200,
                message:'ok',
                data:{
                    user:r,
                    token
                }
            })
        }
    })
})
module.exports = router